package com.skylink.gaea.common.tree;

import lombok.Data;

import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;

/**
 * 通用树节点定义
 *
 * @author zeno
 */
@Data
public class Node<ID>{

  /** 节点对象标识 */
  private ID id;

  /** 节点对象名称 */
  private String name;

  /** 节点对象类型 */
  private String type;

  /**
   * 父节点标识
   * 为 null 表示顶级节点
   */
  private ID parentId;

  /** 子节点列表 */
  private Collection<Node<ID>> children;

  public Node(){
    children = Collections.emptyList();
  }

  public void addChild( Node<ID> node ){

    if( this.children.isEmpty() ){
      this.children = new LinkedList<>();
    }

    this.children.add(node);
  }
}
